package com.java.yz.day14.ketang;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/*
    序列化:将 对象 像数据流一样在网络中传输ObjectOutputStream

    反序列化:将网络中数据流还原成一个对象ObjectInputStream
 */

//java.io.NotSerializableException: com.java.yz.day14.ketang.Student  不可序列化异常
//但是这样写完之后发现报了这样的一个错误，
//java中的所有的对象都可以序列化，
//但是前提要是实现了 Serializable 接口的类才可以序列化
//像Serializable接口这样的没有常量也没有抽象方法的叫做标记接口 之前的cloneable也是标记接口
//实现起来该接口就会不报错了


public class ObjectOutputStreamDemo1 {
    public static void main(String[] args) {
        //创建一个学生对象
        Student s1 = new Student("杨镇", 20,123456);
        //在创建一个序列化输出流对象    里面要传一个序列化对象OutputStream out
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream("src/com/java/yz/day14/ketang/a.txt"));
            //就会将内容输出到该文件中去
            oos.writeObject(s1);  //可以传一个对象, 可以把刚才的学生对象传进去
            oos.flush();
            //这样就把一个对象写进去了





        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (oos != null){
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
